﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SharpSphinx.Linguist
{
     public interface ISearchState
    {


         /// <summary>
        /// Gets a successor to this search state
         /// </summary>
         /// <returns></returns>
         ISearchStateArc[] getSuccessors();



         /// <summary>
         /// Determines if this is an emitting state
         /// </summary>
         /// <returns></returns>
         bool isEmitting();


         /// <summary>
         /// Determines if this is a final state
         /// </summary>
         /// <returns></returns>
         bool isFinal();

         /// <summary>
         /// Returns a pretty version of the string representation for this object
         /// </summary>
         /// <returns></returns>
         String toPrettyString();


         /// <summary>
         /// Returns a unique signature for this state
         /// </summary>
         /// <returns></returns>
         String getSignature();


         /// <summary>
         /// Gets the word history for this state
         /// </summary>
         /// <returns></returns>
         WordSequence getWordHistory();



         /// <summary>
         /// Returns the lex tree state
         /// </summary>
         /// <returns></returns>
         Object getLexState(); 



         /// <summary>
         /// Returns the order of this particular state
         /// </summary>
         
         int getOrder(); 




    }
}
